package com.ge.modules.api.service.impl;

import com.ge.common.exception.RRException;
import com.ge.common.validator.Assert;
import com.ge.modules.api.service.TbStoreService;
import com.ge.modules.dao.TbStoreDao;
import com.ge.modules.entity.TbStoreEntity;
import com.ge.modules.entity.TbUser;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;




@Service
public class TbStoreServiceImpl implements TbStoreService {
	@Autowired
	private TbStoreDao storeDao;
	
	@Override
	public TbStoreEntity queryByStoreId(Integer storeId){
		return storeDao.queryById(storeId);
	}

	@Override
	public TbStoreEntity queryByObject(TbStoreEntity store) {
		return storeDao.queryObject(store);
	}

	@Override
	public List<TbStoreEntity> queryList(Map<String, Object> map){
		return storeDao.queryList(map);
	}

	@Override
	public List<TbStoreEntity> queryList(TbStoreEntity store) {
		return storeDao.queryList(store);
	}

	@Override
	public List<TbStoreEntity> queryListObject(TbStoreEntity store) {
		return storeDao.queryListObject(store);
	}

	@Override
	public int queryTotal(Map<String, Object> map){
		return storeDao.queryTotal(map);
	}
	
	@Override
	public void save(TbStoreEntity store){
		storeDao.save(store);
	}
	
	@Override
	public void update(TbStoreEntity store){
		storeDao.update(store);
	}
	
	@Override
	public void delete(Long storeId){
		storeDao.delete(storeId);
	}
	
	@Override
	public void deleteBatch(Integer[] storeIds){
		storeDao.deleteBatch(storeIds);
	}

	@Override
	public Integer login(String mobile, String password) {
		TbStoreEntity store = queryByMobile(mobile);
		Assert.isNull(store, "手机号或密码错误");
		//密码错误
		if (!store.getPassword().equals(DigestUtils.sha256Hex(password))) {
			throw new RRException("手机号或密码错误");
		}

		return store.getStoreId();
	}

	@Override
	public TbStoreEntity queryByMobile(String mobile) {
		return storeDao.queryByMobile(mobile);
	}

	@Override
	public List<TbUser> queryStoreUser(Integer storeId) {
		return storeDao.queryStoreUser(storeId);
	}

}
